package genetic.q1.functions;

import genetic.q1.WithallPhenotype;

public abstract class Statement implements ProgramObject {
	
	String name;
	protected ProgramObject[] evals;
	private int param;
	
	public Statement(String name, ProgramObject[] evals){
		this.name = name;
		this.evals = evals;
	}
	
	public abstract int getNumVars();
	
	public boolean isEndStatement(){
		return false;
	}
	
	public boolean isBeginStatement(){
		return false;
	}

	public abstract Statement CreateInstance(ProgramObject[] evals);
	public abstract ProgramObject choose(int j, int i, WithallPhenotype withallPhenotype);

	public void setParam(int backTrackPlace) {
		param = backTrackPlace;
	}
	
	public int getParam() {
		return param;
	}

	public abstract int execute(Program program);

	public void reset() {
	}
}
